isxdigit関数は、指定された文字が十六進数の数字であるかを調べます。十六進数の数字とは、半角の’0’~’9’、’a’~’f’、’A’~’F’です。
#include <ctype.h>
int isxdigit(int c);
cは、チェックしたい文字を指定します。int型ですので注意してください。
戻り値として、引数の値が十六進数の数字であれば0以外を、そうでなければ0を返します。
次の例題では、isxdigit関数の引数を明示的にint型に型変換(キャスト)していますが、型変換を指定していない場合は自動的に変換されます。
プログラム 例
#include <stdio.h> #include <ctype.h> int main(void) { int loop_cnt; char in_data; for (loop_cnt = 1; loop_cnt <= 5; ++loop_cnt) { printf('1文字入力してください ==> '); scanf('%c%*c', &in_data); /* in_dataの値が十六進数の数字だったら0以外が返る */ if (isxdigit((int)in_data) != 0) { printf('十六進数の数字です\n'); } else { printf('十六進数の数字以外です\n'); } } return 0; }
例の実行結果
5回目はスペースを入力しています。
$ ./isxdigit.exe 1文字入力してください ==> 0 十六進数の数字です 1文字入力してください ==> a 十六進数の数字です 1文字入力してください ==> g 十六進数の数字以外です 1文字入力してください ==> ? 十六進数の数字以外です 1文字入力してください ==> 十六進数の数字以外です $